package com.neuedu.corejava.ch8;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

public class TestReadFile {
	public static void main(String[] args) {

		// 编写一段代码，读取某个java程序，并把读取的代码显示到控制台
		// 1.文件定位，找文件 -- 文件操作
		File file = new File("D:\\java11workspace\\corejava\\src\\com\\neuedu\\corejava\\ch7\\PartInner.java");
		if (file.exists()) {
			// 2.读内容 - 文件内容操作 //内容的读取是按位操作的，8bit ->byte //使用文件流的方式进行读取
			BufferedReader bufferedReader = null;
			InputStreamReader reader = null;
			FileInputStream inputStream = null;
			try {// 使用异常捕获方法，在main方法中处理异常，
				inputStream = new FileInputStream(file);// 检查异常 ,如果不进行处理，则无法通过编译器检查，无法生成class文件
				reader = new InputStreamReader(inputStream,"UTF-8");//GBK
				bufferedReader = new BufferedReader(reader);
				String line = bufferedReader.readLine();// 一行一行读取文件，如果文件读取完毕，返回null
				while (line != null) {
					System.out.println(line);
					line = bufferedReader.readLine();
				}
			} catch (FileNotFoundException e) {
				e.printStackTrace();// 在异常处理中，可以通过打印堆栈信息，查询程序错误提示，并进行代码处理( 给用户进行操作提示 或 指引用户进行其他操作)
			} catch (IOException e) {// 一个try代码块中，可能发生多个异常，可以使用多个catch块进行异常捕获
				e.printStackTrace();
			} finally {// finally代码块跟在try块后，用于执行不管是否发生异常都要运行的代码;finally的代码一定会执行
				if (inputStream != null) {
					try {
						inputStream.close();
					} catch (IOException e) {
					}
				}
			}
		}

	}
}
